/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * JP_RegistrarResultado.java
 *
 * Created on 16/07/2009, 03:57:11 PM
 */

package gui;
import delegate.GestionDelegate;
import controlacciones.ejb3.entity.TbArea;
import controlacciones.ejb3.pojo.TableBeanBinding_RESUL;
import controlaccionescomercial.ControlAccionesComercialApp;
import controlaccionescomercial.ControlAccionesComercialView;
import helper.JP_Utiles_PanelBotonesMantenimiento;
import helper.JP_Utiles_PanelModelo;
import helper.Utiles_Exportar;
import helper.Utiles_MensajesDialogo;
import helper.Utiles_Panel;
import java.awt.BorderLayout;
import java.beans.PropertyVetoException;
import java.io.File;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JInternalFrame;
import net.sf.jasperreports.engine.JRException;
import org.jdesktop.application.Action;
import org.jdesktop.application.Task;
/**
 *
 * @author Vanessa
 */
public class JP_RegistrarResultadoI extends JP_Utiles_PanelModelo {

    /** Creates new form JP_RegistrarResultado */
    public JP_RegistrarResultadoI() {
        inicializaComponentes();
    }

    private void inicializaComponentes(){
        initComponents();
        //Panel de Operaciones
        ArrayList alBotones = new ArrayList( 1 );
        alBotones.add( new Integer( JP_Utiles_PanelBotonesMantenimiento.BOTON_GUARDAR ) );
        alBotones.add( new Integer( JP_Utiles_PanelBotonesMantenimiento.BOTON_CERRAR ) );
        jp_ope = new JP_Utiles_PanelBotonesMantenimiento( this, alBotones );
        jp_Operaciones.setLayout( new BorderLayout() );
        jp_Operaciones.add( jp_ope, BorderLayout.CENTER );
        this.listaDatos = new ArrayList(1);
        this.cargaComboArea();        
    }

     private void cargaComboArea(){
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
        List listTbArea = null; // seteamos variable local
        List listaArea = comboBeanBindingArea1.getLista();
        listaArea.clear();
        try {
            listTbArea = GestionDelegate.getInstance().getListaArea();
        } catch (Exception e) {
            System.out.println( "Error en gestionDelegate.getListaArea()" );
            return;
        }
        this.comboBeanBindingArea1.setLista(listTbArea);
        this.bindingGroup.bind();
        this.cmbArea.updateUI();
        if( listTbArea.size() > 0 ){
            this.cmbArea.setSelectedIndex( 0 );
        }
    }

    private void cargaTabla(){
        TbArea seleccionado;
        String cod_area;
        seleccionado = (TbArea) this.cmbArea.getSelectedItem();
        cod_area = seleccionado.getCodArea();

        mensaje = "Cargando tabla.............. ";
        this.lblMensaje.setText(mensaje);
        System.out.println(mensaje);
        try {
            listaDatos = GestionDelegate.getInstance().getListaResultados(cod_area, pagActual, pagTamanno);
        } catch (Exception ex) {
            //Logger.getLogger(JP_ListarAcciones_Area.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println( "Error al listar Resultados: " + ex.getMessage() );
        }
        if(listaDatos != null){
            if( listaDatos.isEmpty() ){
               helper.Utiles_MensajesDialogo.mensajeAlerta("No existen Resultados para mostrar");
            }
        }
        construirTabla();
        this.lblMensaje.setText("Número total de registros: " + this.numRegistros );
    }

    private void limpiarTabla(){
        listaDatos = null;
        construirTabla();
    }

    private void construirTabla(){
//        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
        jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, listaDatos, this.tbResultadoAcciones);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idResult}"));
        columnBinding.setColumnName("Id. Result");
        columnBinding.setColumnClass(Integer.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding2 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idAccion}"));
        columnBinding2.setColumnName("Id. Accion");
        columnBinding2.setColumnClass(Integer.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding3 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${numInscrip}"));
        columnBinding3.setColumnName("NumInscrip");
        columnBinding3.setColumnClass(String.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding4 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${nombre}"));
        columnBinding4.setColumnName("Nombre");
        columnBinding4.setColumnClass(String.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding5 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${cod_tipo_accion}"));
        columnBinding5.setColumnName("Tipo Accion");
        columnBinding5.setColumnClass(String.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding6 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${fechaRegistro}"));
        columnBinding6.setColumnName("Fec Registro");
        columnBinding6.setColumnClass(String.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding7 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${fechaRecepcion}"));
        columnBinding7.setColumnName("Fec Recepcion");
        columnBinding7.setColumnClass(String.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding8 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${fechaEjecucion}"));
        columnBinding8.setColumnName("Fec Ejecucion");
        columnBinding8.setColumnClass(String.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding9 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${codTipoEjecucion}"));
        columnBinding9.setColumnName("Tipo de Ejecucion");
        columnBinding9.setColumnClass(String.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding10 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${codTipoObservacion}"));
        columnBinding10.setColumnName("Tipo de Observacion");
        columnBinding10.setColumnClass(String.class);

        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding11 = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${lectMedidor}"));
        columnBinding11.setColumnName("Lect. Medidor");
        columnBinding11.setColumnClass(String.class);

        bindingGroup.addBinding(jTableBinding);
        bindingGroup.bind();
    }

    public void refrescarTabla(){
        try{
            this.bindingGroup.removeBinding(jTableBinding);
        }catch( Exception e ){

        }
        this.cargaTabla();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        comboBeanBindingArea1 = new beansbinding.ComboBeanBindingArea();
        jLabel1 = new javax.swing.JLabel();
        btnSeleccionarArchivo = new javax.swing.JButton();
        jtxtNom_Archivo = new javax.swing.JTextField();
        jp_Derechohabientes = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbResultadoAcciones = new javax.swing.JTable();
        jp_Operaciones = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        cmbArea = new javax.swing.JComboBox();
        lblMensaje = new javax.swing.JLabel();
        btnConsultar = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        btnPrimero = new javax.swing.JButton();
        btnAnterior = new javax.swing.JButton();
        btnSiguiente = new javax.swing.JButton();
        btnUltimo = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();

        setName("Form"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(controlaccionescomercial.ControlAccionesComercialApp.class).getContext().getResourceMap(JP_RegistrarResultadoI.class);
        jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        btnSeleccionarArchivo.setFont(resourceMap.getFont("btnSeleccionarArchivo.font")); // NOI18N
        btnSeleccionarArchivo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gui/resources/images/search-folder-blue.gif"))); // NOI18N
        btnSeleccionarArchivo.setText(resourceMap.getString("btnSeleccionarArchivo.text")); // NOI18N
        btnSeleccionarArchivo.setName("btnSeleccionarArchivo"); // NOI18N
        btnSeleccionarArchivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSeleccionarArchivoActionPerformed(evt);
            }
        });

        jtxtNom_Archivo.setText(resourceMap.getString("jtxtNom_Archivo.text")); // NOI18N
        jtxtNom_Archivo.setName("jtxtNom_Archivo"); // NOI18N

        jp_Derechohabientes.setBorder(javax.swing.BorderFactory.createTitledBorder(null, resourceMap.getString("jp_Derechohabientes.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, resourceMap.getFont("jp_Derechohabientes.border.titleFont"))); // NOI18N
        jp_Derechohabientes.setName("jp_Derechohabientes"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        tbResultadoAcciones.setAutoCreateRowSorter(true);
        tbResultadoAcciones.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        tbResultadoAcciones.setName("tbResultadoAcciones"); // NOI18N
        jScrollPane1.setViewportView(tbResultadoAcciones);

        javax.swing.GroupLayout jp_DerechohabientesLayout = new javax.swing.GroupLayout(jp_Derechohabientes);
        jp_Derechohabientes.setLayout(jp_DerechohabientesLayout);
        jp_DerechohabientesLayout.setHorizontalGroup(
            jp_DerechohabientesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 711, Short.MAX_VALUE)
        );
        jp_DerechohabientesLayout.setVerticalGroup(
            jp_DerechohabientesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jp_DerechohabientesLayout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 219, Short.MAX_VALUE)
                .addContainerGap())
        );

        jp_Operaciones.setName("jp_Operaciones"); // NOI18N

        javax.swing.GroupLayout jp_OperacionesLayout = new javax.swing.GroupLayout(jp_Operaciones);
        jp_Operaciones.setLayout(jp_OperacionesLayout);
        jp_OperacionesLayout.setHorizontalGroup(
            jp_OperacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 349, Short.MAX_VALUE)
        );
        jp_OperacionesLayout.setVerticalGroup(
            jp_OperacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 44, Short.MAX_VALUE)
        );

        jLabel2.setFont(resourceMap.getFont("jLabel2.font")); // NOI18N
        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
        jLabel2.setName("jLabel2"); // NOI18N

        cmbArea.setName("cmbArea"); // NOI18N

        org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create("${lista}");
        org.jdesktop.swingbinding.JComboBoxBinding jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, comboBeanBindingArea1, eLProperty, cmbArea);
        bindingGroup.addBinding(jComboBoxBinding);

        cmbArea.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmbAreaActionPerformed(evt);
            }
        });
        cmbArea.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                cmbAreaKeyPressed(evt);
            }
        });

        lblMensaje.setFont(resourceMap.getFont("lblMensaje.font")); // NOI18N
        lblMensaje.setForeground(resourceMap.getColor("lblMensaje.foreground")); // NOI18N
        lblMensaje.setText(resourceMap.getString("lblMensaje.text")); // NOI18N
        lblMensaje.setName("lblMensaje"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(controlaccionescomercial.ControlAccionesComercialApp.class).getContext().getActionMap(JP_RegistrarResultadoI.class, this);
        btnConsultar.setAction(actionMap.get("verResultados")); // NOI18N
        btnConsultar.setFont(resourceMap.getFont("btnConsultar.font")); // NOI18N
        btnConsultar.setText(resourceMap.getString("btnConsultar.text")); // NOI18N
        btnConsultar.setName("btnConsultar"); // NOI18N

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
        jPanel1.setName("jPanel1"); // NOI18N

        btnPrimero.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gui/resources/images/2leftarrow.gif"))); // NOI18N
        btnPrimero.setName("btnPrimero"); // NOI18N
        btnPrimero.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPrimeroActionPerformed(evt);
            }
        });

        btnAnterior.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gui/resources/images/1leftarrow.gif"))); // NOI18N
        btnAnterior.setName("btnAnterior"); // NOI18N
        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAnteriorActionPerformed(evt);
            }
        });

        btnSiguiente.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gui/resources/images/1rightarrow.gif"))); // NOI18N
        btnSiguiente.setName("btnSiguiente"); // NOI18N
        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSiguienteActionPerformed(evt);
            }
        });

        btnUltimo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gui/resources/images/2rightarrow.gif"))); // NOI18N
        btnUltimo.setName("btnUltimo"); // NOI18N
        btnUltimo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnUltimoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addComponent(btnPrimero, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnAnterior, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnSiguiente, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnUltimo, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(93, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(btnPrimero, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
            .addComponent(btnAnterior, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
            .addComponent(btnSiguiente, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
            .addComponent(btnUltimo, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
        );

        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
        jButton1.setName("jButton1"); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(25, 25, 25)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel2)
                                .addGap(93, 93, 93)
                                .addComponent(cmbArea, javax.swing.GroupLayout.PREFERRED_SIZE, 221, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 287, Short.MAX_VALUE)
                                .addComponent(jButton1))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jtxtNom_Archivo, javax.swing.GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnSeleccionarArchivo, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(btnConsultar))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addComponent(lblMensaje, javax.swing.GroupLayout.DEFAULT_SIZE, 713, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jp_Operaciones, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(10, 10, 10))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(5, 5, 5)
                    .addComponent(jp_Derechohabientes, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGap(5, 5, 5)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(cmbArea, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel2)
                            .addComponent(jButton1))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel1)
                            .addComponent(jtxtNom_Archivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnSeleccionarArchivo)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(36, 36, 36)
                        .addComponent(btnConsultar)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 272, Short.MAX_VALUE)
                .addComponent(lblMensaje, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(jp_Operaciones, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(72, 72, 72)
                    .addComponent(jp_Derechohabientes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(76, Short.MAX_VALUE)))
        );

        bindingGroup.bind();
    }// </editor-fold>//GEN-END:initComponents

    private void btnSeleccionarArchivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSeleccionarArchivoActionPerformed
        this.seleccionarArchivo();
    }//GEN-LAST:event_btnSeleccionarArchivoActionPerformed

    private void cmbAreaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbAreaActionPerformed
        
}//GEN-LAST:event_cmbAreaActionPerformed

    private void cmbAreaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cmbAreaKeyPressed
        if( evt.getKeyCode() == evt.VK_ENTER ){
            this.jtxtNom_Archivo.requestFocus();
        }
}//GEN-LAST:event_cmbAreaKeyPressed

    private void btnPrimeroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPrimeroActionPerformed
        this.primero();
        this.cargaTabla();
}//GEN-LAST:event_btnPrimeroActionPerformed

    private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAnteriorActionPerformed
        this.anterior();
        this.cargaTabla();
}//GEN-LAST:event_btnAnteriorActionPerformed

    private void btnSiguienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSiguienteActionPerformed
        this.siguiente();
        this.cargaTabla();
}//GEN-LAST:event_btnSiguienteActionPerformed

    private void btnUltimoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUltimoActionPerformed
        this.ultimo();
        this.cargaTabla();
}//GEN-LAST:event_btnUltimoActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        generarArchivoTxtSici();
    }//GEN-LAST:event_jButton1ActionPerformed

    public void importarResultados( ){
        boolean ban = false;
        TbArea area;
        this.limpiarTabla();
         try {
            area = (TbArea) this.cmbArea.getSelectedItem();
        } catch (Exception e) {
            Utiles_MensajesDialogo.mensajeAlerta("Seleccione el area");
            return;
        }
        if(copiarArchivosResultados(area.getCodArea())){
            if(verificarEstadoJob(area.getCodArea()) == true){
                if(ejecutaIntegracion(area.getCodArea())== true ){
                    this.getNumPaginas();                    
                    this.cargaTabla();
                    //helper.Utiles_MensajesDialogo.mensajeExito();
                }
            }
        }        
    }

    public boolean ejecutaIntegracion( String codarea){
        boolean rpta = false;
        String ban = "";
        //Ejecutar integracion
        try {
            mensaje = "Ejecutando integracion.............. " + codarea+" - " + nom_job ;
            this.lblMensaje.setText(mensaje);
            System.out.println(mensaje);
            ban = GestionDelegate.getInstance().ejecutarIntegracionResultados(codarea, nom_job);
            System.out.println(ban);
        } catch (SQLException ex) {
            ban = ex.getMessage();
        }
        if( !ban.equalsIgnoreCase("bien") ){
            System.out.println(ban);
            helper.Utiles_MensajesDialogo.mensajeFracaso( ban );
            return false;
        }
        return true;
    }

    public void seleccionarArchivo(){
        JFileChooser jfc = new JFileChooser();
        jfc.setMultiSelectionEnabled( false );
        if( ruta != null ){
            jfc.setCurrentDirectory( new File( ruta ) );
        }
        int returnVal = jfc.showOpenDialog( this );
        if( returnVal == JFileChooser.APPROVE_OPTION ){
             arch_origen = new File( jfc.getSelectedFile().toString() );
             this.jtxtNom_Archivo.setText(arch_origen.getAbsolutePath());
        }
    }

    public boolean copiarArchivosResultados( String codarea ){
        TbArea area;
        String fechaIni;
        File directorio_destino = null;
//        JFileChooser jfc = new JFileChooser();
//        jfc.setMultiSelectionEnabled( false );
//        if( ruta != null ){
//            jfc.setCurrentDirectory( new File( ruta ) );
//        }
//        int returnVal = jfc.showOpenDialog( this );
//        if( returnVal == JFileChooser.APPROVE_OPTION ){
//             arch_origen = new File( jfc.getSelectedFile().toString() );
        if(arch_origen == null){
            helper.Utiles_MensajesDialogo.mensajeError("Seleccione un archivo válido");
            return false;
        }else{
             arch_destino = new File("S:\\Sistemas EJB\\Resultados\\" + "RESUL"+ codarea +".DBF");
             directorio_destino = new File("S:\\Sistemas EJB\\Resultados");
             if( !directorio_destino.exists()){
                 directorio_destino.mkdirs();//Creamos el directorio.
             }
             System.out.println("Imprime Ruta - archivo origen: "+arch_origen.getAbsolutePath());
            //Copiar Archivo al servidor
            try{
                //Eliminar el Arcivos temporal de resulatdos segun el area
                 if(arch_destino.exists()){
                    if(arch_destino.delete()){
                        System.out.println( "Archivo de Resultados eliminado" );
                    }
                }                
                //Copiar el archivo a S
                helper.Utiles_Archivo.copy(arch_origen, arch_destino);
                //Copiar el archivo de S a F(unidad local del servidor)
                GestionDelegate.getInstance().copiaArchivoResultados(arch_destino, codarea);
                System.out.println( "Archivo Copiado" );
            }catch( Exception ex ){
                System.out.println(ex.getMessage());
                return false;
            }
             return true;
        }
    }

    public boolean verificarEstadoJob(String codarea){
        boolean rpta = false;
        id_parametro = getParametroResultado(codarea);
        nom_job = getNomJobResultado(codarea);
        //Verificar si se esta ejecuntado el proyecto de integracion
        mensaje = "Verificando si el Job ha sido iniciado.............. ";
        this.lblMensaje.setText(mensaje);
        System.out.println(mensaje);
        try {
            if (!GestionDelegate.getInstance().seEstaEjecutandoJob2(id_parametro) && !GestionDelegate.getInstance().verificarJobEjecutando(nom_job)) {
                System.out.println("Proceso de integracion no se esta ejecutando");
                rpta = true;
            } else {
                rpta = false;
                helper.Utiles_MensajesDialogo.mensajeError("El proceso de integracion de Resultados ya ha sido iniciado por otro usuario");                            }
        } catch (Exception ex) {
            rpta = false;
            helper.Utiles_MensajesDialogo.mensajeError(ex.getMessage());
        }
        return rpta;
    }

    public String getParametroResultado( String codarea){
        if( codarea.equalsIgnoreCase("C") ){
            return "RC";
        }
        if( codarea.equalsIgnoreCase("M") ){
            return "RM";
        }
        if( codarea.equalsIgnoreCase("CA") ){
            return "RCA";
        }
        if( codarea.equalsIgnoreCase("AT") ){
            return "RAT";
        }
        if( codarea.equalsIgnoreCase("F") ){
            return "RF";
        }
        return "";
    }

    public String getNomJobResultado( String codarea){
        if( codarea.equalsIgnoreCase("C") ){
            return "JobProcesarResultados_Cobranza";
        }
        if( codarea.equalsIgnoreCase("M") ){
            return "JobProcesarResultados_Medicion";
        }
        if( codarea.equalsIgnoreCase("CA") ){
            return "JobProcesarResultados_Catastro";
        }
        if( codarea.equalsIgnoreCase("AT") ){
            return "JobProcesarResultados_MAC";
        }
        if( codarea.equalsIgnoreCase("F") ){
            return "JobProcesarResultados_Facturacion";
        }
        return "";
    }
    
    public void mostrarErroresResultados(){
        JP_ListarErrorResultados panel = new JP_ListarErrorResultados(  );
        ifrErroresResult = Utiles_Panel.creaVentanaInterna_Panel((ControlAccionesComercialView)this.getRef(), panel, "Errores de Resultados");
        panel.setPadre(Utiles_Panel.TIPO_JINTERNALFRAME, ifrErroresResult);
        panel.setRef( this );        
    }

    @Action
    public Task verResultados(){
        try {
            this.btnConsultar.setEnabled(false);
            this.btnSeleccionarArchivo.setEnabled(false);
            this.jp_ope.getBtnGuardar().setEnabled(false);
            this.btnPrimero.setEnabled(false);
            this.btnAnterior.setEnabled(false);
            this.btnSiguiente.setEnabled(false);
            this.btnUltimo.setEnabled(false);
            this.tbResultadoAcciones.setEnabled(false);
            this.jtxtNom_Archivo.setEnabled(false);
            importarResultados();
            this.btnConsultar.setEnabled(true);
            this.btnSeleccionarArchivo.setEnabled(true);
            this.jp_ope.getBtnGuardar().setEnabled(true);
            this.btnPrimero.setEnabled(true);
            this.btnAnterior.setEnabled(true);
            this.btnSiguiente.setEnabled(true);
            this.btnUltimo.setEnabled(true);
            this.tbResultadoAcciones.setEnabled(true);
            this.jtxtNom_Archivo.setEnabled(true);
        } catch (Exception ex) {
            //Logger.getLogger(JP_RegistrarResultadoI.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println( "Error de resultados" );
        }
        return null;
    }

    @Override
    public Task guardar() {
        try {
             TbArea area;
             String log_user = ControlAccionesComercialApp.LOG_USER;
             area = (TbArea) this.cmbArea.getSelectedItem();
             String ban = GestionDelegate.getInstance().procesarResultadoAcciones(area.getCodArea(), log_user);
             if( ban.trim().equalsIgnoreCase("bien") ){
                 helper.Utiles_MensajesDialogo.mensajeExito();
             }else{
                 helper.Utiles_MensajesDialogo.mensajeError(ban);
             }             
             mostrarErroresResultados();
             generarReportes();
             generarArchivoTxtSici();
        } catch (Exception ex) {
            Logger.getLogger(JP_RegistrarResultadoI.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    @Override
    public Task cerrar() {
        if( ifrErroresResult != null ){
            try {
                ifrErroresResult.setClosed(true);
                ifrErroresResult.dispose();
                ifrErroresResult = null;
            } catch (PropertyVetoException ex) {
                //Logger.getLogger(JP_AprobarAcciones.class.getName()).log(Level.SEVERE, null, ex);
                System.err.println( "Error al  cerrar la ventana de Errores: " + ex.getMessage());
            }
        }
        this.cerrarPadre();
        return null;
    }

    public String getNombreArchivoSICI(){
        String nomArchivo = "";
        try{
            int contador = GestionDelegate.getInstance().getContadorArchivoSICI();
            nomArchivo = "R" + helper.Utiles_Cadena.completaCeros( "" + contador , 7);
            System.out.println( nomArchivo );
        }catch( Exception e ){
            System.out.println( "Error al obtener el archivo SICI: " +e.getMessage() );
        }
        return nomArchivo;
    }
    public void generarArchivoTxtSici(){
        //El archivo txt tendra los ultimos resultados procesados de los cliente
        //El nombre del archivo sera correlativo
        List temp = null ;
         try {
            temp = GestionDelegate.getInstance().getListaDatosArchivoResultado();
        } catch (Exception ex) {
            //Logger.getLogger(JP_ListarAcciones_Area.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println( "Error getListaDatosArchivoResultado: " + ex.getMessage() );
        }
        if( temp == null){
            helper.Utiles_MensajesDialogo.mensajeAlerta("Error al obtener resultados para expotar al SICI");
        }else{
            if( temp.size() > 0 ){
                ArrayList datos = helper.Utiles_Varios.convertirListToArrayList(temp);
                String nombreArchivo, extArchivo, delimitador, ruta;
                File directorio;
//                ruta = "D:\\Proyectos EPS GRAU\\CONTROL DE ACCIONES\\Sistemas EJB\\Resultados\\";
                //ruta = "S:\\Sistemas EJB\\Resultados\\SICI\\";
                ruta = "D:\\prueba\\";
                //directorio = new File("S:\\Sistemas EJB\\Resultados\\SICI");
                directorio = new File("D:\\prueba");
                if( !directorio.exists() ){
                    if( directorio.mkdirs() ){
                        System.out.println( "Directorio creado: " + directorio.getAbsolutePath() );
                    }
                }
                nombreArchivo = getNombreArchivoSICI() ;
                extArchivo = ".txt";
                delimitador = "|";
                try{
                    System.out.println( "antes de exportar" );
                    Utiles_Exportar ue = new Utiles_Exportar( ruta + nombreArchivo, extArchivo, delimitador, datos );
                    ue.exportarArchivoTexto(8,4,9);
                    helper.Utiles_MensajesDialogo.mensajeInfo( "El archivo para exportar al SICI a sido creado en \n " + ruta );
                }catch( Exception e ){
                    System.out.println( "error: " + e.getMessage());
                }
            }else{
                helper.Utiles_MensajesDialogo.mensajeAlerta("No existe resultados para exportar al SICI");
            }
        }
    }

    public void generarReportes(){
        Map parametros = new HashMap();
//        String direcc = "D:\\Proyectos EPS GRAU\\Frank\\Sistemas EJB 2\\ControlAccionesComercial_EAR-ejb\\src\\java\\report\\";//System.getProperty("user.dir")+"\\";
        String direcc = "F:/sistemaRRHH/CONTROL DE ACCIONES/";//System.getProperty("user.dir")+"\\";
        parametros.put("SUBREPORT_DIR",direcc);
        System.err.println("SUBREPORT_DIR  " + direcc );
        try {
            helper.Utiles_Reporte.generarReporte("Reporte_Resultados_Procesados.jasper", parametros);
            //helper.Utiles_Reporte.generarReporte("Reporte_Error_Resultados.jasper", parametros);
        } catch (JRException ex) {
            //Logger.getLogger(JP_ListarAcciones_Area.class.getName()).log(Level.SEVERE, null, ex);
            System.err.println( "Error al generar el reporte1: " + ex.getMessage() );
        } catch (Exception ex) {
            //Logger.getLogger(JP_ListarAcciones_Area.class.getName()).log(Level.SEVERE, null, ex);
            System.err.println( "Error al generar el reporte2: " + ex.getMessage() );
        }
    }
    //Paginacion

    public void primero(){
        pagActual = 0;
        System.out.println("pagActual: " + pagActual);
    }

    public void siguiente() {
        if( pagActual < this.pagUltima){
            pagActual++;
        }
        System.out.println("pagActual: " + pagActual);
    }

    public void anterior() {
        pagActual--;
        if (pagActual < 0) {
            pagActual = 0;
        }
        System.out.println("pagActual: " + pagActual);
    }

    public void ultimo(){
        pagActual = pagUltima;
    }

    public void getNumPaginas(){
        try {
            int num_registros = getNumRegistros();
            if (pagTamanno > 0) {
                double ultima = num_registros / pagTamanno;
                System.out.println("ultima:" + ultima);
                pagUltima = (int) java.lang.Math.ceil(ultima);
                System.out.println("pagUltima: " + pagUltima);
            }
        } catch (Exception e) {
        }
        System.out.println("pagUltima: " + pagUltima);
    }

    public int getNumRegistros( ){        
        TbArea area;
        String fechaIni;
        try {
            area = (TbArea) this.cmbArea.getSelectedItem();
        } catch (Exception e) {
            return 1;
        }

        try {
            numRegistros = GestionDelegate.getInstance().getNumRegistrosResultados(area.getCodArea());
            System.out.println( "Num de Registros: " + numRegistros );
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return numRegistros;
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAnterior;
    private javax.swing.JButton btnConsultar;
    private javax.swing.JButton btnPrimero;
    private javax.swing.JButton btnSeleccionarArchivo;
    private javax.swing.JButton btnSiguiente;
    private javax.swing.JButton btnUltimo;
    private javax.swing.JComboBox cmbArea;
    private beansbinding.ComboBeanBindingArea comboBeanBindingArea1;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel jp_Derechohabientes;
    private javax.swing.JPanel jp_Operaciones;
    private javax.swing.JTextField jtxtNom_Archivo;
    private javax.swing.JLabel lblMensaje;
    private javax.swing.JTable tbResultadoAcciones;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables
 

    private org.jdesktop.swingbinding.JTableBinding jTableBinding;
//    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    private JP_Utiles_PanelBotonesMantenimiento jp_ope;
    private String ruta;
    private String id_parametro ="";
    private String nom_job = "";
    private List<TableBeanBinding_RESUL> listaDatos;
    String mensaje;

    //Paginacion
    private int pagActual = 0;
    //private int maxResults;
    private int pagTamanno = 50;
    private int numRegistros = 1;
    int pagUltima = 0;
    File arch_origen = null, arch_destino = null;

    private JInternalFrame ifrErroresResult;
}